﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using System.Data;
using SisEagle.IView.Administracao;

namespace SisEagle.View.Web.Administracao
{
    public partial class Funcionarios : WebPageBase, IFuncionariosView
    {
        #region Singleton
        private SisEagleBO.FuncionarioBO _FuncionarioBusiness;
        private SisEagleBO.FuncionarioBO FuncionarioBusiness
        {
            get
            {
                if (_FuncionarioBusiness == null)
                    _FuncionarioBusiness = new SisEagleBO.FuncionarioBO();

                return _FuncionarioBusiness;
            }
        }

        #endregion

        #region Page-Load
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            if (!DesignMode)
            {
                inicialize();
            }

        }

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {

            }
        }
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            gridFuncionarios.PageIndexChanging += (gridFuncionarios_PageIndexChanging);
            gridFuncionarios.RowDataBound += gridFuncionarios_RowDataBound;
        }

        void gridFuncionarios_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int totalRow = ListaResultado.Tables["Funcionario"].Rows.Count;
            AjustaTotalizador(totalRow, null, string.Empty, null, string.Empty, e);
        }

        /// <summary>
        /// Evento de Callback
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void gridFuncionarios_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridFuncionarios.PageIndex = e.NewPageIndex;
            gridFuncionarios.DataSource = BuscarCategorias();
            gridFuncionarios.DataBind();

        }

        private DataView BuscarCategorias()
        {
            DataView dv = new DataView();

            dv = FuncionarioBusiness.FindAll().Tables[0].DefaultView;

            return dv;

        }

        #endregion

        #region Internal

        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {
            CarregaGrid();
        }

        private void CarregaGrid()
        {
            gridFuncionarios.DataSource = ListaResultado;
            gridFuncionarios.DataBind();
        }

        #endregion

        #region Binding

        public int CodFuncionario
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigoFuncionario.Text) || !(UtilsNumber.IsNumber(txtCodigoFuncionario.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtCodigoFuncionario.Text);

            }
            set
            {
                txtCodigoFuncionario.Text = value.ToString();
            }
        }

        public string Nome
        {
            get
            {
                if (string.IsNullOrEmpty(txtNome.Text))
                    return string.Empty;

                else
                    return txtNome.Text.TrimStart();
            }
            set
            {
                txtNome.Text = value;
            }
        }

        public string Endereco
        {
            get
            {
                if (string.IsNullOrEmpty(txtEndereco.Text))
                    return string.Empty;

                else
                    return txtEndereco.Text.TrimStart();
            }
            set
            {
                txtEndereco.Text = value;
            }
        }

        public string NomeCidade
        {
            get
            {
                if (string.IsNullOrEmpty(txtCidade.Text))
                    return string.Empty;

                else
                    return txtCidade.Text.TrimStart();

            }
            set
            {
                txtCidade.Text = value.ToString();
            }
        }

        public string Bairro
        {
            get
            {
                if (string.IsNullOrEmpty(txtBairro.Text))
                    return string.Empty;

                else
                    return txtBairro.Text.TrimStart();
            }
            set
            {
                txtBairro.Text = value;
            }
        }

        public string CPF
        {
            get
            {
                if (string.IsNullOrEmpty(TextCPf.Text))
                    return string.Empty;

                else
                    return TextCPf.Text.TrimStart();
            }
            set
            {
                TextCPf.Text = value;
            }
        }

        public int CodEstado
        {
            get
            {
                if (string.IsNullOrEmpty(UcCmbEstados.ComboEstados.SelectedValue) || !(UtilsNumber.IsNumber(UcCmbEstados.ComboEstados.SelectedValue)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(UcCmbEstados.ComboEstados.SelectedValue);

            }
            set
            {

                UcCmbEstados.ComboEstados.SelectedValue = value.ToString();
            }
        }

        public DataSet ListaResultado
        {
            get
            {
                if (CodFuncionario != 0)
                    return FuncionarioBusiness.FindBy_CodFuncionario(CodFuncionario);

                if (!string.IsNullOrEmpty(Nome))
                    return FuncionarioBusiness.FindBy_Nome(Nome);

                if (!string.IsNullOrEmpty(Endereco))
                    return FuncionarioBusiness.FindBy_Endereco(Endereco);

                if (!string.IsNullOrEmpty(NomeCidade))
                    return FuncionarioBusiness.FindBy_NomeCidade(NomeCidade);

                if (!string.IsNullOrEmpty(Bairro))
                    return FuncionarioBusiness.FindBy_Bairro(Bairro);

                if (!string.IsNullOrEmpty(CPF))
                    return FuncionarioBusiness.FindBy_CPF(CPF);

                if (CodEstado != 0)
                    return FuncionarioBusiness.FindBy_codEstado(CodEstado);
                else
                    return FuncionarioBusiness.FindAll();

            }
            set
            {
                ListaResultado = value;
                CarregaGrid();
            }
        }
        #endregion


    }
}